↳ Prolog
↳ PrologToPiTRSProof
permute_in_ga([], []) → permute_out_ga([], [])
permute_in_ga(.(X, Y), .(U, V)) → U1_ga(X, Y, U, V, delete_in_aga(U, .(X, Y), W))
delete_in_aga(X, .(X, Y), Y) → delete_out_aga(X, .(X, Y), Y)
delete_in_aga(U, .(X, Y), .(X, Z)) → U3_aga(U, X, Y, Z, delete_in_aga(U, Y, Z))
U3_aga(U, X, Y, Z, delete_out_aga(U, Y, Z)) → delete_out_aga(U, .(X, Y), .(X, Z))
U1_ga(X, Y, U, V, delete_out_aga(U, .(X, Y), W)) → U2_ga(X, Y, U, V, permute_in_ga(W, V))
U2_ga(X, Y, U, V, permute_out_ga(W, V)) → permute_out_ga(.(X, Y), .(U, V))
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
permute_in_ga([], []) → permute_out_ga([], [])
permute_in_ga(.(X, Y), .(U, V)) → U1_ga(X, Y, U, V, delete_in_aga(U, .(X, Y), W))
delete_in_aga(X, .(X, Y), Y) → delete_out_aga(X, .(X, Y), Y)
delete_in_aga(U, .(X, Y), .(X, Z)) → U3_aga(U, X, Y, Z, delete_in_aga(U, Y, Z))
U3_aga(U, X, Y, Z, delete_out_aga(U, Y, Z)) → delete_out_aga(U, .(X, Y), .(X, Z))
U1_ga(X, Y, U, V, delete_out_aga(U, .(X, Y), W)) → U2_ga(X, Y, U, V, permute_in_ga(W, V))
U2_ga(X, Y, U, V, permute_out_ga(W, V)) → permute_out_ga(.(X, Y), .(U, V))
PERMUTE_IN_GA(.(X, Y), .(U, V)) → U1_GA(X, Y, U, V, delete_in_aga(U, .(X, Y), W))
PERMUTE_IN_GA(.(X, Y), .(U, V)) → DELETE_IN_AGA(U, .(X, Y), W)
DELETE_IN_AGA(U, .(X, Y), .(X, Z)) → U3_AGA(U, X, Y, Z, delete_in_aga(U, Y, Z))
DELETE_IN_AGA(U, .(X, Y), .(X, Z)) → DELETE_IN_AGA(U, Y, Z)
U1_GA(X, Y, U, V, delete_out_aga(U, .(X, Y), W)) → U2_GA(X, Y, U, V, permute_in_ga(W, V))
U1_GA(X, Y, U, V, delete_out_aga(U, .(X, Y), W)) → PERMUTE_IN_GA(W, V)
permute_in_ga([], []) → permute_out_ga([], [])
permute_in_ga(.(X, Y), .(U, V)) → U1_ga(X, Y, U, V, delete_in_aga(U, .(X, Y), W))
delete_in_aga(X, .(X, Y), Y) → delete_out_aga(X, .(X, Y), Y)
delete_in_aga(U, .(X, Y), .(X, Z)) → U3_aga(U, X, Y, Z, delete_in_aga(U, Y, Z))
U3_aga(U, X, Y, Z, delete_out_aga(U, Y, Z)) → delete_out_aga(U, .(X, Y), .(X, Z))
U1_ga(X, Y, U, V, delete_out_aga(U, .(X, Y), W)) → U2_ga(X, Y, U, V, permute_in_ga(W, V))
U2_ga(X, Y, U, V, permute_out_ga(W, V)) → permute_out_ga(.(X, Y), .(U, V))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
PERMUTE_IN_GA(.(X, Y), .(U, V)) → U1_GA(X, Y, U, V, delete_in_aga(U, .(X, Y), W))
PERMUTE_IN_GA(.(X, Y), .(U, V)) → DELETE_IN_AGA(U, .(X, Y), W)
DELETE_IN_AGA(U, .(X, Y), .(X, Z)) → U3_AGA(U, X, Y, Z, delete_in_aga(U, Y, Z))
DELETE_IN_AGA(U, .(X, Y), .(X, Z)) → DELETE_IN_AGA(U, Y, Z)
U1_GA(X, Y, U, V, delete_out_aga(U, .(X, Y), W)) → U2_GA(X, Y, U, V, permute_in_ga(W, V))
U1_GA(X, Y, U, V, delete_out_aga(U, .(X, Y), W)) → PERMUTE_IN_GA(W, V)
permute_in_ga([], []) → permute_out_ga([], [])
permute_in_ga(.(X, Y), .(U, V)) → U1_ga(X, Y, U, V, delete_in_aga(U, .(X, Y), W))
delete_in_aga(X, .(X, Y), Y) → delete_out_aga(X, .(X, Y), Y)
delete_in_aga(U, .(X, Y), .(X, Z)) → U3_aga(U, X, Y, Z, delete_in_aga(U, Y, Z))
U3_aga(U, X, Y, Z, delete_out_aga(U, Y, Z)) → delete_out_aga(U, .(X, Y), .(X, Z))
U1_ga(X, Y, U, V, delete_out_aga(U, .(X, Y), W)) → U2_ga(X, Y, U, V, permute_in_ga(W, V))
U2_ga(X, Y, U, V, permute_out_ga(W, V)) → permute_out_ga(.(X, Y), .(U, V))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
DELETE_IN_AGA(U, .(X, Y), .(X, Z)) → DELETE_IN_AGA(U, Y, Z)
permute_in_ga([], []) → permute_out_ga([], [])
permute_in_ga(.(X, Y), .(U, V)) → U1_ga(X, Y, U, V, delete_in_aga(U, .(X, Y), W))
delete_in_aga(X, .(X, Y), Y) → delete_out_aga(X, .(X, Y), Y)
delete_in_aga(U, .(X, Y), .(X, Z)) → U3_aga(U, X, Y, Z, delete_in_aga(U, Y, Z))
U3_aga(U, X, Y, Z, delete_out_aga(U, Y, Z)) → delete_out_aga(U, .(X, Y), .(X, Z))
U1_ga(X, Y, U, V, delete_out_aga(U, .(X, Y), W)) → U2_ga(X, Y, U, V, permute_in_ga(W, V))
U2_ga(X, Y, U, V, permute_out_ga(W, V)) → permute_out_ga(.(X, Y), .(U, V))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
DELETE_IN_AGA(U, .(X, Y), .(X, Z)) → DELETE_IN_AGA(U, Y, Z)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
DELETE_IN_AGA(.(X, Y)) → DELETE_IN_AGA(Y)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
PERMUTE_IN_GA(.(X, Y), .(U, V)) → U1_GA(X, Y, U, V, delete_in_aga(U, .(X, Y), W))
U1_GA(X, Y, U, V, delete_out_aga(U, .(X, Y), W)) → PERMUTE_IN_GA(W, V)
permute_in_ga([], []) → permute_out_ga([], [])
permute_in_ga(.(X, Y), .(U, V)) → U1_ga(X, Y, U, V, delete_in_aga(U, .(X, Y), W))
delete_in_aga(X, .(X, Y), Y) → delete_out_aga(X, .(X, Y), Y)
delete_in_aga(U, .(X, Y), .(X, Z)) → U3_aga(U, X, Y, Z, delete_in_aga(U, Y, Z))
U3_aga(U, X, Y, Z, delete_out_aga(U, Y, Z)) → delete_out_aga(U, .(X, Y), .(X, Z))
U1_ga(X, Y, U, V, delete_out_aga(U, .(X, Y), W)) → U2_ga(X, Y, U, V, permute_in_ga(W, V))
U2_ga(X, Y, U, V, permute_out_ga(W, V)) → permute_out_ga(.(X, Y), .(U, V))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
PERMUTE_IN_GA(.(X, Y), .(U, V)) → U1_GA(X, Y, U, V, delete_in_aga(U, .(X, Y), W))
U1_GA(X, Y, U, V, delete_out_aga(U, .(X, Y), W)) → PERMUTE_IN_GA(W, V)
delete_in_aga(X, .(X, Y), Y) → delete_out_aga(X, .(X, Y), Y)
delete_in_aga(U, .(X, Y), .(X, Z)) → U3_aga(U, X, Y, Z, delete_in_aga(U, Y, Z))
U3_aga(U, X, Y, Z, delete_out_aga(U, Y, Z)) → delete_out_aga(U, .(X, Y), .(X, Z))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ RuleRemovalProof
U1_GA(delete_out_aga(U, W)) → PERMUTE_IN_GA(W)
PERMUTE_IN_GA(.(X, Y)) → U1_GA(delete_in_aga(.(X, Y)))
delete_in_aga(.(X, Y)) → delete_out_aga(X, Y)
delete_in_aga(.(X, Y)) → U3_aga(X, delete_in_aga(Y))
U3_aga(X, delete_out_aga(U, Z)) → delete_out_aga(U, .(X, Z))
delete_in_aga(x0)
U3_aga(x0, x1)
PERMUTE_IN_GA(.(X, Y)) → U1_GA(delete_in_aga(.(X, Y)))
delete_in_aga(.(X, Y)) → delete_out_aga(X, Y)
POL(.(x1, x2)) = 1 + x1 + x2
POL(PERMUTE_IN_GA(x1)) = 2 + 2·x1
POL(U1_GA(x1)) = x1
POL(U3_aga(x1, x2)) = 2 + 2·x1 + x2
POL(delete_in_aga(x1)) = 1 + 2·x1
POL(delete_out_aga(x1, x2)) = 2 + x1 + 2·x2
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ RuleRemovalProof
↳ QDP
↳ DependencyGraphProof
U1_GA(delete_out_aga(U, W)) → PERMUTE_IN_GA(W)
delete_in_aga(.(X, Y)) → U3_aga(X, delete_in_aga(Y))
U3_aga(X, delete_out_aga(U, Z)) → delete_out_aga(U, .(X, Z))
delete_in_aga(x0)
U3_aga(x0, x1)